package nimbus.commands.base
{
	/**
	 * The base interface for all commands used within Nimbus.  For a command to be managed
	 * by the controller, it must implement ICommand.
	 */
	public interface ICommand
	{
		/**
		 * The type string is used as a reference for a command execution.  This is set through
		 * Controller.execCommand() when executing a command.  Once the command has been executed,
		 * and ExecutionEvent is dispatched with this string as its event tpe.  Other portions
		 * of the application that would like to know when commands of the same type are dispatched
		 * can listen to such events by adding an event listener to the controller for the given
		 * type.
		 * 
		 * @see nimbus.Controller#execCommand()
		 */
		function get type():String;
		
		/**
		 * @private
		 */
		function set type(value:String):void;
		
		/**
		 * Called when a command is executed by the controller.
		 * 
		 * @see nimbus.Controller#execCommand()
		 */
		function execute():void;
	}
}